home *** CD-ROM | disk | FTP | other *** search
/ SPACE 2 / SPACE - Library 2 - Volume 1.iso / program / 317 / asmsrc / flonum-k.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-10-20  |  6.7 KB  |  144 lines

  1. /* flonum_const.c - */
  2.  
  3. /* Copyright (C) 1987 Free Software Foundation, Inc.
  4.  
  5. This file is part of Gas, the GNU Assembler.
  6.  
  7. The GNU assembler is distributed in the hope that it will be
  8. useful, but WITHOUT ANY WARRANTY.  No author or distributor
  9. accepts responsibility to anyone for the consequences of using it
  10. or for whether it serves any particular purpose or works at all,
  11. unless he says so in writing.  Refer to the GNU Assembler General
  12. Public License for full details.
  13.  
  14. Everyone is granted permission to copy, modify and redistribute
  15. the GNU Assembler, but only under the conditions described in the
  16. GNU Assembler General Public License.  A copy of this license is
  17. supposed to have been given to you along with the GNU Assembler
  18. so you can know your rights and responsibilities.  It should be
  19. in a file named COPYING.  Among other things, the copyright
  20. notice and this notice must be preserved on all copies.  */
  21.  
  22. #include "flonum.h"
  23. /* JF:  I added the last entry to this table, and I'm not
  24.    sure if its right or not.  Could go either way.  I wish
  25.    I really understood this stuff. */
  26.  
  27.  
  28. int table_size_of_flonum_powers_of_ten = 11;
  29.  
  30. static LITTLENUM_TYPE zero[] = {     1 };
  31.  
  32. /***********************************************************************\
  33. *                                    *
  34. *    Warning: the low order bits may be WRONG here.            *
  35. *    I took this from a suspect bc(1) script.            *
  36. *    "minus_X"[] is supposed to be 10^(2^-X) expressed in base 2^16.    *
  37. *    The radix point is just AFTER the highest element of the []    *
  38. *                                    *
  39. *    Because bc rounds DOWN for printing (I think), the lowest    *
  40. *    significance littlenums should probably have 1 added to them.    *
  41. *                                    *
  42. \***********************************************************************/
  43.  
  44. static LITTLENUM_TYPE minus_1 [] = {
  45.  39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321,
  46.  39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321, 39321,  6553 };
  47. static LITTLENUM_TYPE plus_1 [] = {    10                             };
  48.  
  49. static LITTLENUM_TYPE minus_2 [] = {
  50.  10485, 36700, 62914, 23592, 49807, 10485, 36700, 62914, 23592, 49807,
  51.  10485, 36700, 62914, 23592, 49807, 10485, 36700, 62914, 23592,   655 };
  52. static LITTLENUM_TYPE plus_2 [] = {   100                             };
  53.  
  54. static LITTLENUM_TYPE minus_3 [] = {
  55.  52533, 20027, 37329, 65116, 64067, 60397, 14784, 18979, 33659, 19503,
  56.   2726,  9542,   629,  2202, 40475, 10590,  4299, 47815, 36280,     6 };
  57. static LITTLENUM_TYPE plus_3 [] = { 10000                             };
  58.  
  59. static LITTLENUM_TYPE minus_4 [] = {
  60.  22516, 49501, 54293, 19424, 60699,  6716, 24348, 22618, 23904, 21327,
  61.   3919, 44703, 19149, 28803, 48959,  6259, 50273, 62237,    42        };
  62. static LITTLENUM_TYPE plus_4 [] = { 57600,  1525                      };
  63.  
  64. static LITTLENUM_TYPE minus_5 [] = {
  65.  22199, 45957, 17005, 26266, 10526, 16260, 55017, 35680, 40443, 19789,
  66.  17356, 30195, 55905, 28426, 63010, 44197,  1844                      };
  67. static LITTLENUM_TYPE plus_5 [] = { 28609, 34546,    35               };
  68.  
  69. static LITTLENUM_TYPE minus_6 [] = {
  70.  30926, 26518, 13110, 43018, 54982, 48258, 24658, 15209, 63366, 11929,
  71.  20069, 43857, 60487,    51                                           };
  72. static LITTLENUM_TYPE plus_6 [] = { 61313, 34220, 16731, 11629,  1262 };
  73.  
  74. static LITTLENUM_TYPE minus_7 [] = {
  75.  29819, 14733, 21490, 40602, 31315, 65186,  2695                      };
  76. static LITTLENUM_TYPE plus_7 [] = {
  77.   7937, 49002, 60772, 28216, 38893, 55975, 63988, 59711, 20227,    24 };
  78.  
  79. static LITTLENUM_TYPE minus_8 [] = {
  80.  45849, 19069, 18068, 36324, 37948, 48745, 10873, 64360, 15961, 20566,
  81.  24178, 15922, 59427,   110                                           };
  82. static LITTLENUM_TYPE plus_8 [] = {
  83.  15873, 11925, 39177,   991, 14589, 19735, 25347, 65086, 53853,  938,
  84.  37209, 47086, 33626, 23253, 32586, 42547,  9731, 59679,  590         };
  85.  
  86. static LITTLENUM_TYPE minus_9 [] = {
  87.  63601, 55221, 43562, 33661, 29067, 28203, 65417, 64352, 22462, 41110,
  88.  12570, 28635, 23199, 50572, 28471, 27074, 46375, 64028, 13106, 63700,
  89.  32698, 17493, 32420, 34382, 22750, 20681, 12300                      };
  90. static LITTLENUM_TYPE plus_9 [] = {
  91.  63564, 61556, 29377, 54467, 18621, 28141, 36415, 61241, 47119, 30026,
  92.  19740, 46002, 13541, 61413, 30480, 38664, 32205, 50593, 51112, 48904,
  93.  48263, 43814,   286, 30826, 52813, 62575, 61390, 24540, 21495,     5 };
  94.  
  95. static LITTLENUM_TYPE minus_10 [] = {
  96.  50313, 34681,  1464, 25889, 19575, 41125, 17635,  4598, 49708, 13427,
  97.  17287, 56115, 53783, 38255, 32415, 17778, 31596,  7557, 20951, 18477,
  98.  40353,  1178, 44405, 11837, 11571, 50963, 15649, 11698, 40675,  2308,  };
  99. static LITTLENUM_TYPE plus_10[] = {
  100. 18520, 53764, 54535, 61910, 61962, 59843, 46270, 58053, 12473, 63785,
  101.  2449, 43230, 50044, 47595, 10403, 35766, 32607,  1124, 24966, 35044,
  102. 25524, 23631, 18826, 14518, 58448, 14562, 49618,  5588, 25396,    28 };
  103.  
  104. static LITTLENUM_TYPE minus_11 [] = {
  105.   6223, 59909, 62437, 59960, 14652, 45336, 48800,  7647, 51962, 37982,
  106.  60436, 58176, 26767,  8440,  9831, 48556, 20994, 14148,  6757, 17221,
  107.  60624, 46129, 53210, 44085, 54016, 24259, 11232, 21229, 21313,    81,  };
  108. static LITTLENUM_TYPE plus_11 [] = {
  109.  36159,  2055, 33615, 61362, 23581, 62454,  9748, 15275, 39284, 58636,
  110.  16269, 42793, 47240, 45774, 50861, 48400,  9413, 40281,  4030,  9572,
  111.   7984, 33038, 59522, 19450, 40593, 24486, 54320,  6661, 55766,   805,  };
  112.  
  113. FLONUM_TYPE flonum_negative_powers_of_ten [] = {
  114.   {zero,    zero,        zero,          0, '+'},
  115.   {minus_1,    minus_1  + 19,    minus_1  + 19,    -20, '+'},
  116.   {minus_2,    minus_2  + 19,    minus_2  + 19,    -20, '+'},
  117.   {minus_3,    minus_3  + 19,    minus_3  + 19,    -20, '+'},
  118.   {minus_4,    minus_4  + 18,    minus_4  + 18,    -20, '+'},
  119.   {minus_5,    minus_5  + 16,    minus_5  + 16,    -20, '+'},
  120.   {minus_6,    minus_6  + 13,    minus_6  + 13,    -20, '+'},
  121.   {minus_7,    minus_7  +  6,    minus_7  +  6,    -20, '+'},
  122.   {minus_8,    minus_8  + 13,    minus_8  + 13,    -40, '+'},
  123.   {minus_9,    minus_9  + 26,  minus_9  + 26,  -80, '+'},
  124.   {minus_10,    minus_10 + 29,    minus_10 + 29, -136, '+'},
  125.   {minus_11,    minus_11 + 29,    minus_11 + 29, -242, '+'},
  126. };
  127.  
  128. FLONUM_TYPE flonum_positive_powers_of_ten [] = {
  129.   {zero,    zero,        zero,          0, '+'},
  130.   {plus_1,    plus_1  +  0,    plus_1  +  0,      0, '+'},
  131.   {plus_2,    plus_2  +  0,    plus_2  +  0,      0, '+'},
  132.   {plus_3,    plus_3  +  0,    plus_3  +  0,      0, '+'},
  133.   {plus_4,    plus_4  +  1,    plus_4  +  1,      0, '+'},
  134.   {plus_5,    plus_5  +  2,    plus_5  +  2,      1, '+'},
  135.   {plus_6,    plus_6  +  4,    plus_6  +  4,      2, '+'},
  136.   {plus_7,    plus_7  +  9,    plus_7  +  9,      4, '+'},
  137.   {plus_8,    plus_8    + 18,    plus_8    + 18,      8, '+'},
  138.   {plus_9,    plus_9  + 29,    plus_9    + 29,     24, '+'},
  139.   {plus_10,    plus_10 + 29,    plus_10 + 29,     77, '+'},
  140.   {plus_11,    plus_11 + 29,    plus_11 + 29,    183, '+'},
  141. };
  142.  
  143. /* end: flonum_const.c */
  144.